﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
using BOL;
using Website.Logger;
using System.Drawing;
using System.Web.Script.Services;
using System.Web.Services;
using UtilityExtensions;
using System.Data.SqlClient;


namespace UILGestion.ObraAdmin.Presupuesto
{
    public partial class PresupuestoEditForm : System.Web.UI.Page
    {


        public PresupuestoEditForm()
        {
            bol = new BOL.PresupuestoBL();
        }

        private BOL.PresupuestoBL bol;

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!this.IsPostBack)
                {
                    idInternal.Value = (string)Request.QueryString["id"];
                    idObra.Value = (string)Request.QueryString["idObra"];
                    type.Value = (string)Request.QueryString["type"];
                    paginaAnt.Value = Page.Request.UrlReferrer.AbsoluteUri;
                    type.Value = type.Value == "" ? "A" : type.Value;
                    menuObraCtrl1.loadMenu(idObra.Value.ToInt(), Request.AppRelativeCurrentExecutionFilePath);
                    FormatForm();
                }
            }
            
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }


        private void ShowAllComboBox()
        {
            monedaDDL.DataValueField = "idInternal";
            monedaDDL.DataTextField = "descripcion";
            monedaDDL.DataSource = DbUtil.Db.Monedas;
            monedaDDL.DataBind();

        }

        private void FormatForm()
        {

            //--------------------
            //int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            //bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
            //    idEmpleadoEmisor,
            //    11, //Proveeedor
            //    2); //lectura
            ////------------------------- 
            //// los paneles presentes en el formulario
            //pnlMain.Visible = true;
            ShowAllComboBox();


       



            if (type.Value == "E")
            {
                LoadPrespupuesto();
                tituloLBL.Text = "EDITAR PRESUPUESTO";
                monedaDDL.Enabled = false;
            }
            if (type.Value == "A")
            {
                fechaLBL.Text = DateTime.Now.ToShortDateString();
                tituloLBL.Text = "NUEVO PRESUPUESTO";
                var obra=DbUtil.Db.Obras.Single(p => p.idInternal == idObra.Value.ToInt());
                tipoCambioLBL.Text = obra.tipoCambio.ToString();
                tipoObraLBL.Text = obra.TipoObra.descripcion;
            }

        }
        private void LoadPrespupuesto()
        {
            var presupuesto = DbUtil.Db.Presupuesto.SingleOrDefault(p => p.idInternal == idInternal.Value.ToInt());

            numdocumentoLbl.Text = presupuesto.codigo;
            descripcionTxt.Text = presupuesto.descripcion;
            abreviacionTxt.Text = presupuesto.abreviacion;
            fechaLBL.Text = presupuesto.fecha.Value.ToShortDateString();
            monedaDDL.SelectedValue= presupuesto.idMoneda.ToString();
            estadosTxt.Text = presupuesto.GrupoDatoitem.descripcion;
            tipoObraLBL.Text = presupuesto.Obra.TipoObra.descripcion;
            tipoCambioLBL.Text = presupuesto.Obra.tipoCambio.Value.ToString("N");


            setestadistica();

            
            
        }

        public void setestadistica()
        {

            var presupuesto = DbUtil.Db.Presupuesto.Single(p => p.idInternal == idInternal.Value.ToInt());

            
            totalLBL.Text = String.Format("{0} {1:N}",presupuesto.Moneda.descripcion, presupuesto.monto);
            totalUpdatePanel.Update();
        }


        private void Insert()
        {
                idInternal.Value = bol.add(descripcionTxt.Text,
                                            abreviacionTxt.Text,
                                            idObra.Value.ToInt(),
                                            monedaDDL.SelectedValue.ToInt()).ToString();
            
        }

        private void Update()
        {
            
                bol.update(idInternal.Value.ToInt(),descripcionTxt.Text,abreviacionTxt.Text);
                    
          
        }

        protected void accion(object sender, EventArgs e)
        {

            try
            {

                if ((sender as Button).ID == guardarBTN.ID)
                {

                    if (type.Value == "E") { Update(); }
                    if (type.Value == "A") { Insert(); }

                    Response.Redirect("~/ObraAdmin/Presupuesto/PresupuestoReadForm.aspx?id={0}&idObra={1}".Fmt(idInternal.Value, idObra.Value), true);
                }
                if ((sender as Button).ID == cancelarBTN.ID)
                {
                    Response.Redirect("~/ObraAdmin/Presupuesto/PresupuestoListForm.aspx?idObra={0}".Fmt(idObra.Value), true);
                    //Response.Redirect(paginaAnt.Value, true);
                }
                if ((sender as Button).ID == reestablecerBTN.ID)
                {
                    FormatForm();
                }
                
                

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }




        }
     

      

    }
}